# _*_ coding:UTF-8 _*_
#使用层次结构的配置类,基类Config 中包含通用配置，子类分别定义专用的配置。如果需要，你还可添加其他配置类。
import os
basedir = os.path.abspath(os.path.dirname(__file__))


class Config:
    SQLALCHEMY_TRACK_MODIFICATIONS = False  #如果设置成 True (默认情况)，Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存， 如果不必要的可以禁用它。
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'Logread@2017-12-21&XB'
    BOOTSTRAP_SERVE_LOCAL = True #使用本地的Bootstrap资源，大幅提高访问速度
   # MAIL_SERVER = os.environ.get('MAIL_SERVER', 'smtp.googlemail.com')
   # MAIL_PORT = int(os.environ.get('MAIL_PORT', '587'))
   # MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'true').lower() in \
   #     ['true', 'on', '1']
   # MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
   # MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
   # FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
   # FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
   #FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')

   #配置类可以定义init_app() 类方法，其参数是程序实例。在这个方法中，可以执行对当前环境的配置初始化。现在，基类Config 中的init_app() 方法为空。经常有一些跟类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法. 比如更改环境变量或者修改其他类的属性等能用到静态方法.
    @staticmethod
    def init_app(app):
        pass


class DevelopmentConfig(Config):
#    DEBUG = True
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:logread-f@172.10.11.6:3306/protocol" 
#        'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')


class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
        'sqlite://'


class ProductionConfig(Config):
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data.sqlite')

#config 字典中注册了不同的配置环境，而且还注册了一个'default'默认配置
config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}
